package com.baroxtech.anoterecorder;

// 表示解析出来的一个 midi 数据
public class AMIDICommand {
    public final byte status; // 指令类型
    public final long timestamp; // ns
    public final byte[] data; // 原始数据

    public AMIDICommand(final byte[] data, int offset, int count, long timestamp) {
        this.timestamp = timestamp;
        this.status = (byte)(data[offset] & 0xff);
        byte[] tmp = new byte[count];
        // 拷贝数据
        System.arraycopy(data, offset, tmp, 0, count);
        this.data = tmp;
    }

    // 只有是 channel command 的时候可用
    public byte getChannel() {
        return (byte)(data[0] & 0xf);
    }

    // 是有是 note command 的时候可用
    public byte getPitch() {
        return data[1];
    }

    public byte getVelocity() {
        return (status == AMIDIConstants.STATUS_NOTE_OFF) ? 0 : data[2];
    }
}
